//+------------------------------------------------------------------+
//|                                                   Indicators.mqh |
//|                             Copyright 2000-2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include "Trend.h"
#include "Oscilators.h"
#include "Volumes.h"
#include "BillWilliams.h"
#include "Custom.h"
#include "TimeSeries.h"

//+------------------------------------------------------------------+
//| 指标集合类                                                       |
//| 用途：创建技术指标实例的集合                                      |
//+------------------------------------------------------------------+
class CIndicators : public CArrayObj
{
protected:
   MqlDateTime       m_prev_time;       // 上次刷新时间

public:
   /** 构造函数 */
   CIndicators(void);
   
   /** 析构函数 */
   ~CIndicators(void);
   
   /**
    * 创建指标实例
    * @param symbol 交易品种名称
    * @param period 时间周期
    * @param type 指标类型
    * @param count 参数数量
    * @param params 参数数组
    * @return 创建的指标实例
    */
   CIndicator       *Create(const string symbol, const ENUM_TIMEFRAMES period,
                            const ENUM_INDICATOR type, const int count, const MqlParam &params[]);
   
   /**
    * 调整所有指标缓冲区大小
    * @param size 新的大小
    * @return 成功返回 true，失败返回 false
    */
   bool              BufferResize(const int size);
   
   /**
    * 刷新集合中所有指标的数据
    * @return 刷新标志
    */
   int               Refresh(void);

protected:
   /**
    * 生成时间帧标志
    * @param time 当前时间
    * @return 时间帧标志
    */
   int               TimeframesFlags(const MqlDateTime &time);
};
//+------------------------------------------------------------------+